/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tesoreria.be;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Administrador
 */
@Entity
@Table(name = "tes_tipo_moneda")

public class TipoMoneda implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "tmo_codigo", nullable = false)
    private Long tmoCodigo;
    @Basic(optional = false)
    @Column(name = "tmo_desc", nullable = false, length = 20)
    private String tmoDesc;
    @Basic(optional = false)
    @Column(name = "tmo_simbolo", nullable = false, length = 4)
    private String tmoSimbolo;

    @Basic(optional = false)
    @Column(name = "tmo_simboloContable")
    private String tmoSimboloContable;


    @Basic(optional = false)
    @Column(name = "tmo_valorContable")
    private String tmoValorContable;

    @Column(name = "tmo_defecto")
    private boolean monedaDefecto;
    @Column(name = "tmo_cambioActual")
    private Double cambioActual;
    @Column(name = "tmo_estado")
    private EnumEstadoTipoMoneda estado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkTmoCodigo", fetch = FetchType.LAZY)
    private List<CuentaIngreso> cuentaIngresoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkTmoCodigo", fetch = FetchType.LAZY)
    private List<CuentaBancaria> cuentaBancariaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "tmoCodigo", fetch = FetchType.LAZY)
    private List<DocumentoPago> documentoPagoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "monedaRelacionada", fetch = FetchType.LAZY)
    private List<CuentaEgreso> ListaCuentasEgreso;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "tmocodigoDefecto", fetch = FetchType.LAZY)
    private List<TipoCambio> ListaTipoCambioDefecto;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "tmoCodigo", fetch = FetchType.LAZY)
    private List<TipoCambio> ListaTipoCambio;

    public TipoMoneda() {
    }

    public TipoMoneda(Long tmoCodigo) {
        this.tmoCodigo = tmoCodigo;
    }

    public TipoMoneda(Long tmoCodigo, String tmoDesc, String tmoSimbolo) {
        this.tmoCodigo = tmoCodigo;
        this.tmoDesc = tmoDesc;
        this.tmoSimbolo = tmoSimbolo;
    }

    public Long getTmoCodigo() {
        return tmoCodigo;
    }

    public void setTmoCodigo(Long tmoCodigo) {
        this.tmoCodigo = tmoCodigo;
    }

    public String getTmoDesc() {
        return tmoDesc;
    }

    public void setTmoDesc(String tmoDesc) {
        this.tmoDesc = tmoDesc;
    }

    public String getTmoSimbolo() {
        return tmoSimbolo;
    }

    public void setTmoSimbolo(String tmoSimbolo) {
        this.tmoSimbolo = tmoSimbolo;
    }

    public List<CuentaIngreso> getCuentaIngresoList() {
        return cuentaIngresoList;
    }

    public void setCuentaIngresoList(List<CuentaIngreso> cuentaIngresoList) {
        this.cuentaIngresoList = cuentaIngresoList;
    }

    public List<CuentaBancaria> getCuentaBancariaList() {
        return cuentaBancariaList;
    }

    public void setCuentaBancariaList(List<CuentaBancaria> cuentaBancariaList) {
        this.cuentaBancariaList = cuentaBancariaList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (tmoCodigo != null ? tmoCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TipoMoneda)) {
            return false;
        }
        TipoMoneda other = (TipoMoneda) object;
        if ((this.tmoCodigo == null && other.tmoCodigo != null) || (this.tmoCodigo != null && !this.tmoCodigo.equals(other.tmoCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.tesoreria.be.TipoMoneda[tmoCodigo=" + tmoCodigo + "]";
    }

    /**
     * @return the documentoPagoList
     */
    public List<DocumentoPago> getDocumentoPagoList() {
        return documentoPagoList;
    }

    /**
     * @param documentoPagoList the documentoPagoList to set
     */
    public void setDocumentoPagoList(List<DocumentoPago> documentoPagoList) {
        this.documentoPagoList = documentoPagoList;
    }

    /**
     * @return the ListaCuentasEgreso
     */
    public List<CuentaEgreso> getListaCuentasEgreso() {
        return ListaCuentasEgreso;
    }

    /**
     * @param ListaCuentasEgreso the ListaCuentasEgreso to set
     */
    public void setListaCuentasEgreso(List<CuentaEgreso> ListaCuentasEgreso) {
        this.ListaCuentasEgreso = ListaCuentasEgreso;
    }

    /**
     * @return the ListaTipoCambioDefecto
     */
    public List<TipoCambio> getListaTipoCambioDefecto() {
        return ListaTipoCambioDefecto;
    }

    /**
     * @param ListaTipoCambioDefecto the ListaTipoCambioDefecto to set
     */
    public void setListaTipoCambioDefecto(List<TipoCambio> ListaTipoCambioDefecto) {
        this.ListaTipoCambioDefecto = ListaTipoCambioDefecto;
    }

    /**
     * @return the ListaTipoCambio
     */
    public List<TipoCambio> getListaTipoCambio() {
        return ListaTipoCambio;
    }

    /**
     * @param ListaTipoCambio the ListaTipoCambio to set
     */
    public void setListaTipoCambio(List<TipoCambio> ListaTipoCambio) {
        this.ListaTipoCambio = ListaTipoCambio;
    }

    /**
     * @return the monedaDefecto
     */
    public boolean isMonedaDefecto() {
        return monedaDefecto;
    }

    /**
     * @param monedaDefecto the monedaDefecto to set
     */
    public void setMonedaDefecto(boolean monedaDefecto) {
        this.monedaDefecto = monedaDefecto;
    }

    public Double getCambioActual() {
        return cambioActual;
    }

    public void setCambioActual(Double cambioActual) {
        this.cambioActual = cambioActual;
    }

    /**
     * @return the estado
     */
    public EnumEstadoTipoMoneda getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(EnumEstadoTipoMoneda estado) {
        this.estado = estado;
    }

    /**
     * @return the tmoSimboloContable
     */
    public String getTmoSimboloContable() {
        return tmoSimboloContable;
    }

    /**
     * @param tmoSimboloContable the tmoSimboloContable to set
     */
    public void setTmoSimboloContable(String tmoSimboloContable) {
        this.tmoSimboloContable = tmoSimboloContable;
    }

    /**
     * @return the tmoValorContable
     */
    public String getTmoValorContable() {
        return tmoValorContable;
    }

    /**
     * @param tmoValorContable the tmoValorContable to set
     */
    public void setTmoValorContable(String tmoValorContable) {
        this.tmoValorContable = tmoValorContable;
    }

    

}
